home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 8: LINUX Games / Linux Cubed Series 8 - LINUX Games.iso / games / x11 / networke / xfirepow.000 / xfirepow / xfirepower-0.84 / client / dash.c next >
C/C++ Source or Header  |  1995-05-31  |  3KB  |  95 lines

  1. #include <stdio.h>
  2. #include "Wlib.h"
  3. #include "struct.h"
  4. #include "data.h"
  5.  
  6. #define BOXWIDTH 75
  7.  
  8. static void dash_box(int x, int y, int w, int h, W_Color color)
  9. {
  10.     W_MakeLine(dashwin, x,   y,   x+w, y,   color);
  11.     W_MakeLine(dashwin, x+w, y,   x+w, y+h, color);
  12.     W_MakeLine(dashwin, x+w, y+h, x,   y+h, color);
  13.     W_MakeLine(dashwin, x,   y+h, x,   y,   color);
  14. }
  15.  
  16. static void dash_bar(int x, int y, char *str, int val, int maxval, int curmax, int full_is_good)
  17. {
  18.     char buf[20];
  19.     int fillwidth;
  20.     int box_x, box_y, cm_x;
  21.     W_Color color;
  22.  
  23.     x*=(W_Textwidth*15)+BOXWIDTH;
  24.     y*=(W_Textheight+2);
  25.     
  26.     if(full_is_good) {
  27.     if(val > 2*(maxval/3))
  28.         color = W_Green;
  29.     else if(val > maxval/3)
  30.         color = W_Yellow;
  31.     else
  32.         color = W_Red;
  33.     } else {
  34.     if(val < maxval/3)
  35.         color = W_Green;
  36.     else if(val < 2*(maxval/3))
  37.         color = W_Yellow;
  38.     else
  39.         color = W_Red;
  40.     }
  41.  
  42.     sprintf(buf, "%s [%3d/%3d]", str, val, maxval);
  43.     W_WriteText(dashwin, x, y, W_White, buf, strlen(buf), W_RegularFont);
  44.     box_x = x+strlen(buf)*W_Textwidth;
  45.     box_y = y;
  46.     dash_box(box_x, box_y, BOXWIDTH, W_Textheight, W_White);
  47.     fillwidth = (val * BOXWIDTH)/maxval;
  48.     W_FillArea(dashwin, box_x+1, box_y+1, fillwidth, W_Textheight-1, color);
  49.     if(val < maxval)
  50.     W_ClearArea(dashwin, box_x+1+fillwidth, box_y+1, BOXWIDTH-fillwidth-1, W_Textheight-1);
  51.     if(curmax != maxval) {
  52.     cm_x = box_x + (curmax*BOXWIDTH)/maxval;
  53.     W_FillArea(dashwin, cm_x, box_y+1, BOXWIDTH - (curmax*BOXWIDTH)/maxval, W_Textheight-1, W_Grey);
  54.     }
  55. }
  56.  
  57.  
  58. void do_dash(int re)
  59. {
  60.     static int olddamage=-1, oldspeed=-1, oldfuel = -1, oldammo = -1, oldmines = -1, oldtrees = -1;
  61.     int cm;
  62.  
  63.     if(re || me->p_speed != oldspeed || me->p_damage != olddamage) {
  64.     cm = (((MAXDAMAGE - me->p_damage)*9)/MAXDAMAGE)+1;
  65.     if(cm>9) cm=9;
  66.     dash_bar(0,1, " Spd", me->p_speed, 9, cm, 0);
  67.     oldspeed = me->p_speed;
  68.     }
  69.  
  70.     if(re || me->p_damage != olddamage) {
  71.     dash_bar(0,0, "Damg", me->p_damage, MAXDAMAGE, MAXDAMAGE, 0);
  72.     olddamage = me->p_damage;
  73.     }
  74.  
  75.     if(re || me->p_fuel != oldfuel) {
  76.     dash_bar(0,2, "Fuel", (me->p_fuel*100)/MAXFUEL, 100, 100, 1);
  77.     oldfuel = me->p_fuel;
  78.     }
  79.  
  80.     if(re || me->p_ammo != oldammo) {
  81.     dash_bar(1,0, "Ammo", me->p_ammo, MAXAMMO, MAXAMMO, 1);
  82.     oldammo = me->p_ammo;
  83.     }
  84.  
  85.     if(re || me->p_mines != oldmines) {
  86.     dash_bar(1,1, "Mine", me->p_mines, MINESPERPLAYER, MINESPERPLAYER, 1);
  87.     oldmines = me->p_mines;
  88.     }
  89.     if(re || (me->p_trees != oldtrees)) {
  90.     dash_bar(1,2, "Tree", me->p_trees, MAXTREES, MAXTREES, 1);
  91.     oldtrees = me->p_trees;
  92.     }
  93. }
  94.  
  95.